package WorkTask;

import java.util.Random;
//定义一个长度为[16][16]的整型二维数组并随机生成所有位置的元素值(1~100)，
// 分别实现二维数组每行元素的累加和及每列元素的累加和并打印。
public class ArraySum {
    private int sum = 0;//sum 表示每一行数据和

    public static void arrayPrint(int[][] arr) {

        Random random = new Random();
        for (int i = 0; i < 16; i++) {
            for (int j = 0; j < 16; j++) {
                arr[i][j] = 1;
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }

    }

    public static void sumOfLine(int[][] arr){//该方法为打印行的和
        int sum = 0;
        int a = 0;//a代表行数
        for (int j = 0; j < arr.length; j++) {
            for (int i = 0; i < arr[a].length; i++) {
                sum += arr[a][i];//此时的i代表列数
            }
            System.out.println("第" + (a + 1) + "行的数据和为" + sum);
            sum = 0;//每打印出一行的数据和后，对sum进行重新赋值为0
            a++;//接着打印下一行的和
        }

    }

    public static void sumOfRow(int[][] arr){//该方法为打印列的和
        int sum = 0;
        int a = 0;//此时a代表列数
        for (int j = 0; j < arr.length; j++) {

            for (int i = 0; i < arr.length; i++) {
                sum += arr[i][a];
            }
            System.out.println("第" + (a + 1) + "列的数据和为：" + sum);
            sum = 0;//每打印出一列的数据和后，对sum进行重新赋值为0
            a++;//接着打印下一行的和
        }

    }

    public static void sumOfOblique1(int[][] arr){//该方法为数组左上到右下的数据和
        int i = 0;
        int j = 0;
        int sum = 0;
        while (true){
            sum += arr[i++][j++];
            if(arr.length == i && arr.length == j){
                System.out.println("左上至右下数据和为：" + sum);
                break;
            }
        }

    }
    public static void sumOfOblique2(int[][] arr){
        int i = 0;//
        int j = arr.length -1;
        int sum = 0;
        while (true){
            sum += arr[i++][j--];//i为行，j为列
            if (arr.length == i && -1 == j){
                break;
            }
        }
        System.out.println("从右上至左下的数据和为：" + sum);
    }

}

